package cn.kgc.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.*;

import java.io.Serializable;

/**
 * @author k
 */
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName(value = "industry")
@JsonInclude(value = JsonInclude.Include.ALWAYS)
@SuppressWarnings("all")
public class Industry extends Model<Industry> implements Serializable {
    /**
     * 行业id
     */
    @TableId(type = IdType.ASSIGN_ID)
    private String id;

    /**
     * 行业名称
     */
    @TableField(value = "name")
    private String name;

    /**
     * 排序
     * Integer类型是int类型的包装类。int类型的默认值是0  Integer类型的默认值是null !!!!
     * 如果数据库中某个字段,允许这个字段的值为null,字段对应的类的属性应该就是包装类型(Integer)。 包装类不赋值默认值是null。
     * 集合框架中不能使用基本数据类型,需要使用包装类。
     * ORM框架(MyBatis MyBatisPlus)中,如果某个字段允许为null,那么对应的实体类属性就是包装类型。
     *
     * 方法的参数 方法中的临时变量 大量的数据运算都可以使用基本类型。但是在使用的过程中一定考虑到
     * 基本类型是有默认值的。包装类不赋值,值是null。
     */
    @TableField(value = "sort")
    private Integer sort;

    /**
     * 为0则当前为第一级分类，否则当前为fatherId所对应行业的子分类
     */
    @TableField(value = "father_id")
    private String fatherId;

    /**
     * 用于提供给前端tree显示标记是否展示下拉箭头。一级和二级分类都为0，三级分类为1
     */
    @TableField(value = "is_leaf")
    private Short isLeaf;

    /**
     * 分类层级，用于标记
     */
    @TableField(value = "level")
    private Integer level;
}